/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.seguridad.managed;

import java.util.List;
import javax.faces.bean.ManagedBean;
import sv.com.intesal.clases.abstracts.ViewScopedAbstract;
import sv.com.intesal.clases.others.FormularioName.SEGURIDAD.Procesos;
import sv.com.intesal.rrhh.bean.Empleado;
import sv.com.intesal.seguridad.bean.Modulo;
import sv.com.intesal.seguridad.bean.Roles;
import sv.com.intesal.seguridad.controlador.ModuloControlador;
import sv.com.intesal.seguridad.controlador.RolesControlador;
import sv.com.intesal.seguridad.controlador.UsuarioControlador;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "rolesManaged")
public class RolesManaged extends ViewScopedAbstract {

    private List<Roles> roles;
    private List<Modulo> modulos;
    private Roles selectedEncaRoles;
    private Roles selectedDetaRoles;
    private Empleado selectedEmpleado;

    public RolesManaged() {

        this.selectedEncaRoles = new Roles();
        this.selectedDetaRoles = new Roles();
        this.roles = null;
        this.selectedEmpleado = null;
        this.fillComboBox();
    }

    private void fillComboBox() {
        try {
            if (this.modulos == null) {
                ModuloControlador mc = new ModuloControlador();
                this.modulos = mc.getModulosActivos();
            }
            if (this.selectedEncaRoles.getRol() == null) {
                RolesControlador rc = new RolesControlador();
                this.selectedEncaRoles.setRol(rc.getRolInicio());
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    private void fillGrid() {
        try {
            if (sm.validar_rol_usuario(Procesos.wfrmRoles, sm.buscar) == true) {
                if (this.selectedEmpleado != null) {
                    if (this.selectedEmpleado.getCodigo_e() != null) {
                        RolesControlador r = new RolesControlador();
                        this.roles = r.getRoles_x_Usuario(this.selectedEmpleado.getCodigo_e());
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void getQuickEmpleado(Empleado em) {
        try {
            this.selectedEmpleado = em;
            this.fillGrid();
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void selectAllChanges(Roles r) {
        try {
            RolesControlador rc = new RolesControlador();
            rc.update(r);
            m.messageInfo(m.getImodificada());
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    public void completeTransaction() {
        try {
            if (this.validar() == true) {
                if (sm.validar_rol_usuario(Procesos.wfrmRoles, sm.modificar) == true) {

                    UsuarioControlador uc = new UsuarioControlador();
                    this.selectedEncaRoles.setCodigo_u(uc.getUsuario_x_Empleado(this.selectedEmpleado.getCodigo_e()).getCodigo_u());

                    RolesControlador rc = new RolesControlador();
                    rc.updateEspecial(this.selectedEncaRoles);
                    m.messageInfo(m.getIinformation());

                    this.fillGrid();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    private Boolean validar() throws Exception {

        try {
            if (this.selectedEmpleado == null) {
                m.messageError("DEBE ELEGIR UN EMPLEADO PARA PODER MODIFICAR");
                return false;
            } else if (this.selectedEmpleado.getCodigo_e() == null) {
                m.messageError("DEBE ELEGIR UN EMPLEADO PARA PODER MODIFICAR");
                return false;
            }

            if (this.selectedEncaRoles.getCodigo_m() == null) {
                m.messageError("NO EXISTE MODULO");
                return false;
            }
            return true;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    /*SETTERS AND GETTERS*/
    public List<Modulo> getModulos() {
        return modulos;
    }

    public void setModulos(List<Modulo> modulos) {
        this.modulos = modulos;
    }

    public List<Roles> getRoles() {
        return roles;
    }

    public void setRoles(List<Roles> roles) {
        this.roles = roles;
    }

    public Roles getSelectedDetaRoles() {
        if (selectedDetaRoles == null) {
            selectedDetaRoles = new Roles();
        }
        return selectedDetaRoles;
    }

    public void setSelectedDetaRoles(Roles selectedDetaRoles) {
        this.selectedDetaRoles = selectedDetaRoles;
    }

    public Empleado getSelectedEmpleado() {
        return selectedEmpleado;
    }

    public void setSelectedEmpleado(Empleado selectedEmpleado) {
        this.selectedEmpleado = selectedEmpleado;
    }

    public Roles getSelectedEncaRoles() {
        return selectedEncaRoles;
    }

    public void setSelectedEncaRoles(Roles selectedEncaRoles) {
        this.selectedEncaRoles = selectedEncaRoles;
    }
}
